This relates to integrated circuits such as programmable integrated circuits with interconnect circuitry.
Programmable integrated circuits are well known. Programmable integrated circuits can be programmed by a user to implement a desired custom logic function. In a typical scenario, a logic designer uses computer-aided design (CAD) tools to design a custom logic circuit. When the design process is complete, the tools generate configuration data. The configuration data is loaded into programmable integrated circuit memory elements to configure the devices to perform the functions of the custom logic circuit. In particular, the configuration data configures programmable interconnects, programmable routing circuits, and programmable logic circuits in the programmable integrated circuits. During normal operation, the programmable integrated circuit memory elements provide static control signals that configure the programmable logic regions and programmable interconnects to perform the desired custom logic function.
Programmable integrated circuits include programmable logic circuits that are configured to receive input signals and perform custom functions to produce output signals. The input and output signals to each logic circuit are provided by interconnects that can be configured to selectively route signals throughout the programmable integrated circuit. Programmable integrated circuits are often programmed to perform custom user functions that produce outputs based on multiple different inputs. For example, logic circuits may be programmed to perform multiplexing functions to select a given input from multiple inputs. Each input often includes many different signals (e.g., each of the inputs may include eight, sixteen, or more data bits at any given time).
Programmable integrated circuits use interconnects to route data to the inputs of the logic circuits. The interconnects are statically configured (e.g., by loading configuration values into associated programmable memory elements) to route the data to the logic circuits. However, this may result in inefficient use of the interconnects in scenarios such as when the logic circuits only require a subset of the inputs at any given time (e.g., when the logic circuits are programmed to perform a multiplexing function that selects only one of the inputs at any given time). In these scenarios, the interconnects that provide non-selected inputs may be unused (e.g., due to the static configuration of the interconnects).